package lambda06;

import org.junit.Test;

import java.util.Arrays;
import java.util.function.Function;

import static java.util.Arrays.sort;

/**
 * Function接口
 *    适用于既传递参数又获取执行结果的操作
 *  @FunctionalInterface
 * public interface Function<T, R> {
 *    R apply(T t);
 *  }
 */
public class FunctionDemo {
    @Test
    public void test(){
        // 将一个整数字符串，转换成一个整数返回
        Function<String,Integer> f1 = str->Integer.parseInt(str);
        Integer i = f1.apply("123");
        System.out.println(i); // 123
    }

    @Test
    public void test02() {
        // 获取一个整型数组中最大的元素
        //Arrays的方法: static void sort(int[] a)
        //          对指定的 int 型数组按数字从小到大排序。
        Function<int[], Integer> f1 = arr -> {
            sort(arr);
            return arr[arr.length - 1]; // 最大索引位置就是最大元素
        };
        System.out.println(f1.apply(new int[]{13, 23, 19, 1})); // 23
    }
}
